<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>FastAPI</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/FastAPI"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-FastAPI rootpage-FastAPI skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">FastAPI</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<style data-mw-deduplicate="TemplateStyles:r1305433154">
/* start https://en.wikipedia.org/ */
.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1248332772">
/* start https://en.wikipedia.org/ */
.mw-parser-output .multiple-issues-text{width:95%;margin:0.2em 0}.mw-parser-output .multiple-issues-text>.mw-collapsible-content{margin-top:0.3em}.mw-parser-output .compact-ambox .ambox{border:none;border-collapse:collapse;background-color:transparent;margin:0 0 0 1.6em!important;padding:0!important;width:auto;display:block}body.mediawiki .mw-parser-output .compact-ambox .ambox.mbox-small-left{font-size:100%;width:auto;margin:0}.mw-parser-output .compact-ambox .ambox .mbox-text{padding:0!important;margin:0!important}.mw-parser-output .compact-ambox .ambox .mbox-text-span{display:list-item;line-height:1.5em;list-style-type:disc}body.skin-minerva .mw-parser-output .multiple-issues-text>.mw-collapsible-toggle,.mw-parser-output .compact-ambox .ambox .mbox-image,.mw-parser-output .compact-ambox .ambox .mbox-imageright,.mw-parser-output .compact-ambox .ambox .mbox-empty-cell,.mw-parser-output .compact-ambox .hide-when-compact{display:none}
/* end https://en.wikipedia.org/ */
</style>
<style data-mw-deduplicate="TemplateStyles:r1295905060">
/* start https://en.wikipedia.org/ */
.mw-parser-output .infobox-subbox{padding:0;border:none;margin:-3px;width:auto;min-width:100%;font-size:100%;clear:none;float:none;background-color:transparent}.mw-parser-output .infobox-3cols-child{margin:auto}.mw-parser-output .infobox .navbar{font-size:100%}@media screen{html.skin-theme-clientpref-night .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media(min-width:640px){body.skin--responsive .mw-parser-output .infobox-table{display:table!important}body.skin--responsive .mw-parser-output .infobox-table>caption{display:table-caption!important}body.skin--responsive .mw-parser-output .infobox-table>tbody{display:table-row-group}body.skin--responsive .mw-parser-output .infobox-table th,body.skin--responsive .mw-parser-output .infobox-table td{padding-left:inherit;padding-right:inherit}}
/* end https://en.wikipedia.org/ */
</style><table class="infobox vevent"><tbody><tr><th colspan="2" class="infobox-above summary">FastAPI</th></tr><tr><td colspan="2" class="infobox-image logo"><span typeof="mw:File"></span></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Programmer" title="Programmer">Developer(s)</a></th><td class="infobox-data">Sebastián Ramírez</td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;">Initial release</th><td class="infobox-data">December 5, 2018<span style="display:none"> (<span class="bday dtstart published updated">2018-12-05</span>)</span><sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup></td></tr><tr style="display: none;"><td colspan="2" class="infobox-full-data"></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Software_release_life_cycle" title="Software release life cycle">Stable release</a></th><td class="infobox-data"><div style="margin:0px;">0.116.1<sup id="cite_ref-wikidata-00c8c00049ae3112ac28756c6018b46d95694aa1-v20_2-0" class="reference"><a href="#cite_note-wikidata-00c8c00049ae3112ac28756c6018b46d95694aa1-v20-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>
/ 11 July 2025<span style="display:none"> (<span class="bday dtstart published updated">11 July 2025</span>)</span></div></td></tr><tr style="display:none"><td colspan="2">
</td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Repository_(version_control)" title="Repository (version control)">Repository</a></th><td class="infobox-data"><span class="url"><a rel="nofollow" class="external text" href="https://github.com/tiangolo/fastapi">github<wbr>.com<wbr>/tiangolo<wbr>/fastapi</a></span></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;">Written in</th><td class="infobox-data"><a href="Python_(programming_language)" title="Python (programming language)">Python</a></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Software_categories#Categorization_approaches" title="Software categories">Type</a></th><td class="infobox-data"><a href="Web_framework" title="Web framework">Web framework</a></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Software_license" title="Software license">License</a></th><td class="infobox-data"><a href="MIT_License" title="MIT License">MIT</a></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;">Website</th><td class="infobox-data"><span class="url"><a rel="nofollow" class="external text" href="https://fastapi.tiangolo.com/">fastapi<wbr>.tiangolo<wbr>.com</a></span></td></tr></tbody></table>
<p><b>FastAPI</b> is a high-performance <a href="Web_framework" title="Web framework">web framework</a> for building <a href="HTTP" title="HTTP">HTTP</a>-based service <a href="API" title="API">APIs</a> in <a href="Python_(programming_language)" title="Python (programming language)">Python</a> 3.8+.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> It uses Pydantic and type hints to <a href="Data_validation" title="Data validation">validate</a>, <a href="Serialization" title="Serialization">serialize</a> and deserialize data. FastAPI also automatically generates <a href="OpenAPI_Specification" title="OpenAPI Specification">OpenAPI</a> documentation for APIs built with it.<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> It was first released in 2018.
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="Components">Components</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Pydantic">Pydantic</h3></div>
<p>Pydantic is a data validation library for Python. While writing code in an <a href="Integrated_development_environment" title="Integrated development environment">IDE</a>, Pydantic provides type hints based on annotations.<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> FastAPI extensively utilizes Pydantic models for data validation, serialization, and automatic API documentation. These models are using standard Python type hints, providing a declarative way to specify the structure and types of data for incoming requests (e.g., HTTP bodies) and outgoing responses.<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-highlight mw-highlight-lang-python mw-content-ltr" dir="ltr"><pre><span class="kn">from</span><span class="w"> </span><span class="nn">fastapi</span><span class="w"> </span><span class="kn">import</span> <span class="n">FastAPI</span>
<span class="kn">from</span><span class="w"> </span><span class="nn">pydantic</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseModel</span>
<span class="n">app</span> <span class="o">=</span> <span class="n">FastAPI</span><span class="p">()</span>
<span class="k">class</span><span class="w"> </span><span class="nc">Item</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
<span class="n">name</span><span class="p">:</span> <span class="nb">str</span>
<span class="n">price</span><span class="p">:</span> <span class="nb">float</span>
<span class="n">is_offer</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
<span class="nd">@app</span><span class="o">.</span><span class="n">post</span><span class="p">(</span><span class="s2">"/items/"</span><span class="p">)</span>
<span class="k">def</span><span class="w"> </span><span class="nf">create_item</span><span class="p">(</span><span class="n">item</span><span class="p">:</span> <span class="n">Item</span><span class="p">):</span>
<span class="c1"># The 'item' object is already validated and typed</span>
<span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Item received"</span><span class="p">,</span> <span class="s2">"item_name"</span><span class="p">:</span> <span class="n">item</span><span class="o">.</span><span class="n">name</span><span class="p">}</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="Starlette">Starlette</h3></div>
<p>Starlette is a lightweight <a href="Asynchronous_Server_Gateway_Interface" title="Asynchronous Server Gateway Interface">ASGI</a> framework/toolkit, to support async functionality in Python.<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Uvicorn">Uvicorn</h3></div>
<p>Uvicorn is a minimal low-level server/application web server for async frameworks, following the <a rel="nofollow" class="external text" href="https://asgi.readthedocs.io/en/latest/">ASGI specification</a>. Technically, it implements a multi-process model with one main process, which is responsible for managing a pool of worker processes and distributing incoming HTTP requests to them. The number of worker processes is pre-configured, but can also be adjusted up or down at runtime.<sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="OpenAPI_integration">OpenAPI integration</h3></div>
<p>FastAPI automatically generates <a href="OpenAPI_Specification" title="OpenAPI Specification">OpenAPI</a> documentation for APIs. This documentation includes both <a href="Swagger_(software)" title="Swagger (software)">Swagger UI</a> and <i>ReDoc</i>, which provide interactive API documentation that you can use to explore and test your endpoints in real time. This is particularly useful for developing, testing, and sharing APIs with other developers or users. Swagger UI is accessible by default at <b>/docs</b> and ReDoc at <b>/redoc</b> route.<sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Features">Features</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Asynchronous_operations">Asynchronous operations</h3></div>
<p>FastAPI's architecture inherently supports <b>asynchronous programming</b>. This design allows the <a href="Global_interpreter_lock" title="Global interpreter lock">single-threaded</a> <a href="Event_loop" title="Event loop">event loop</a> to handle a large number of concurrent requests efficiently, particularly when dealing with I/O-bound operations like database queries or external API calls. For reference, see <a href="Async/await" title="Async/await">async/await pattern</a>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Dependency_injection">Dependency injection</h3></div>
<p>FastAPI incorporates a <a href="Dependency_injection" title="Dependency injection">Dependency Injection (DI)</a> system to manage and provide services to HTTP endpoints. This mechanism allows developers to declare components such as database sessions or authentication logic as function parameters. FastAPI automatically resolves these dependencies for each request, injecting the necessary instances.<sup id="cite_ref-10" class="reference"><a href="#cite_note-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-highlight mw-highlight-lang-python mw-content-ltr" dir="ltr"><pre><span class="kn">from</span><span class="w"> </span><span class="nn">fastapi</span><span class="w"> </span><span class="kn">import</span> <span class="n">Depends</span><span class="p">,</span> <span class="n">HTTPException</span><span class="p">,</span> <span class="n">status</span>
<span class="kn">from</span><span class="w"> </span><span class="nn">db</span><span class="w"> </span><span class="kn">import</span> <span class="n">DbSession</span>
<span class="c1"># --- Dependency for Database Session ---</span>
<span class="k">def</span><span class="w"> </span><span class="nf">get_db</span><span class="p">():</span>
<span class="n">db</span> <span class="o">=</span> <span class="n">DbSession</span><span class="p">()</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">yield</span> <span class="n">db</span>
<span class="k">finally</span><span class="p">:</span>
<span class="n">db</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
<span class="nd">@app</span><span class="o">.</span><span class="n">post</span><span class="p">(</span><span class="s2">"/items/"</span><span class="p">,</span> <span class="n">status_code</span><span class="o">=</span><span class="n">status</span><span class="o">.</span><span class="n">HTTP_201_CREATED</span><span class="p">)</span>
<span class="k">def</span><span class="w"> </span><span class="nf">create_item</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">description</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">db</span><span class="p">:</span> <span class="n">DbSession</span> <span class="o">=</span> <span class="n">Depends</span><span class="p">(</span><span class="n">get_db</span><span class="p">)):</span>
<span class="n">new_item</span> <span class="o">=</span> <span class="n">Item</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> <span class="n">description</span><span class="o">=</span><span class="n">description</span><span class="p">)</span>
<span class="n">db</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">new_item</span><span class="p">)</span>
<span class="n">db</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span>
<span class="n">db</span><span class="o">.</span><span class="n">refresh</span><span class="p">(</span><span class="n">new_item</span><span class="p">)</span>
<span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Item created successfully!"</span><span class="p">,</span> <span class="s2">"item"</span><span class="p">:</span> <span class="n">new_item</span><span class="p">}</span>
<span class="nd">@app</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"/items/</span><span class="si">{item_id}</span><span class="s2">"</span><span class="p">)</span>
<span class="k">def</span><span class="w"> </span><span class="nf">read_item</span><span class="p">(</span><span class="n">item_id</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> <span class="n">db</span><span class="p">:</span> <span class="n">DbSession</span> <span class="o">=</span> <span class="n">Depends</span><span class="p">(</span><span class="n">get_db</span><span class="p">)):</span>
<span class="n">item</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">Item</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">Item</span><span class="o">.</span><span class="n">id</span> <span class="o">==</span> <span class="n">item_id</span><span class="p">)</span><span class="o">.</span><span class="n">first</span><span class="p">()</span>
<span class="k">if</span> <span class="n">item</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">HTTPException</span><span class="p">(</span><span class="n">status_code</span><span class="o">=</span><span class="n">status</span><span class="o">.</span><span class="n">HTTP_404_NOT_FOUND</span><span class="p">,</span> <span class="n">detail</span><span class="o">=</span><span class="s2">"Item not found"</span><span class="p">)</span>
<span class="k">return</span> <span class="n">item</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="WebSockets_support">WebSockets support</h3></div>
<p><a href="WebSocket" title="WebSocket">WebSockets</a> allow full-duplex communication between a client and the server. This capability is fundamental for applications requiring continuous data exchange, such as instant messaging platforms, live data dashboards, or multiplayer online games. FastAPI leverages the underlying Starlette implementation, allowing for efficient management of connections and message handling.<sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-highlight mw-highlight-lang-python mw-content-ltr" dir="ltr"><pre><span class="c1"># You must have 'websockets' package installed</span>
<span class="kn">from</span><span class="w"> </span><span class="nn">fastapi</span><span class="w"> </span><span class="kn">import</span> <span class="n">WebSocket</span>
<span class="nd">@app</span><span class="o">.</span><span class="n">websocket</span><span class="p">(</span><span class="s2">"/ws"</span><span class="p">)</span>
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">websocket_endpoint</span><span class="p">(</span><span class="n">websocket</span><span class="p">:</span> <span class="n">WebSocket</span><span class="p">):</span>
<span class="k">await</span> <span class="n">websocket</span><span class="o">.</span><span class="n">accept</span><span class="p">()</span>
<span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="n">data</span> <span class="o">=</span> <span class="k">await</span> <span class="n">websocket</span><span class="o">.</span><span class="n">receive_text</span><span class="p">()</span>
<span class="k">await</span> <span class="n">websocket</span><span class="o">.</span><span class="n">send_text</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Message text was: </span><span class="si">{</span><span class="n">data</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="Background_tasks">Background tasks</h3></div>
<p>FastAPI enables the execution of background tasks after an HTTP response has been sent to the client. This allows the API to immediately respond to user requests while simultaneously processing non-critical or time-consuming operations in the background. Typical applications include sending email notifications, updating caches, or performing data post-processing.<sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-highlight mw-highlight-lang-python mw-content-ltr" dir="ltr"><pre><span class="kn">import</span><span class="w"> </span><span class="nn">time</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">shutil</span>
<span class="kn">from</span><span class="w"> </span><span class="nn">fastapi</span><span class="w"> </span><span class="kn">import</span> <span class="n">BackgroundTasks</span><span class="p">,</span> <span class="n">UploadFile</span><span class="p">,</span> <span class="n">File</span>
<span class="kn">from</span><span class="w"> </span><span class="nn">utils</span><span class="w"> </span><span class="kn">import</span> <span class="n">generate_thumbnail</span>
<span class="nd">@app</span><span class="o">.</span><span class="n">post</span><span class="p">(</span><span class="s2">"/upload-image/"</span><span class="p">)</span>
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">upload_image</span><span class="p">(</span>
<span class="n">image</span><span class="p">:</span> <span class="n">UploadFile</span> <span class="o">=</span> <span class="n">File</span><span class="p">(</span><span class="o">...</span><span class="p">),</span>
<span class="n">background_tasks</span><span class="p">:</span> <span class="n">BackgroundTasks</span>
<span class="p">):</span>
<span class="n">file_location</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"uploaded_images/</span><span class="si">{</span><span class="n">image</span><span class="o">.</span><span class="n">filename</span><span class="si">}</span><span class="s2">"</span>
<span class="c1"># Save uploaded image</span>
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">image_path</span><span class="p">,</span> <span class="s2">"wb"</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
<span class="n">contents</span> <span class="o">=</span> <span class="k">await</span> <span class="n">file</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
<span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">contents</span><span class="p">)</span>
<span class="c1"># Add thumbnail generation as a background task</span>
<span class="n">tasks</span><span class="o">.</span><span class="n">add_task</span><span class="p">(</span><span class="n">generate_thumbnail</span><span class="p">,</span> <span class="n">file_location</span><span class="p">,</span> <span class="s2">"200x200"</span><span class="p">)</span>
<span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Image '</span><span class="si">{</span><span class="n">image</span><span class="o">.</span><span class="n">filename</span><span class="si">}</span><span class="s2">' uploaded. Thumbnail generation started in background."</span><span class="p">}</span>
</pre></div>
<div class="mw-heading mw-heading2"><h2 id="Example">Example</h2></div>
<p>The following code shows a simple web application that displays "<a href="%22Hello%2C_World!%22_program" title=""Hello, World!" program">Hello World</a>!" when visited:
</p>
<div class="mw-highlight mw-highlight-lang-python mw-content-ltr" dir="ltr"><pre><span class="c1"># Import FastAPI class from the fastapi package</span>
<span class="kn">from</span><span class="w"> </span><span class="nn">fastapi</span><span class="w"> </span><span class="kn">import</span> <span class="n">FastAPI</span>
<span class="c1"># Create an instance of the FastAPI app</span>
<span class="n">app</span> <span class="o">=</span> <span class="n">FastAPI</span><span class="p">()</span>
<span class="c1"># Define a GET route for the root URL ("/")</span>
<span class="nd">@app</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"/"</span><span class="p">)</span>
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">read_root</span><span class="p">()</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
<span class="c1"># Return a plain text response</span>
<span class="k">return</span> <span class="s2">"Hello, World!"</span>
</pre></div>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1266661725">
/* start https://en.wikipedia.org/ */
.mw-parser-output .portalbox{padding:0;margin:0.5em 0;display:table;box-sizing:border-box;max-width:175px;list-style:none}.mw-parser-output .portalborder{border:1px solid var(--border-color-base,#a2a9b1);padding:0.1em;background:var(--background-color-neutral-subtle,#f8f9fa)}.mw-parser-output .portalbox-entry{display:table-row;font-size:85%;line-height:110%;height:1.9em;font-style:italic;font-weight:bold}.mw-parser-output .portalbox-image{display:table-cell;padding:0.2em;vertical-align:middle;text-align:center}.mw-parser-output .portalbox-link{display:table-cell;padding:0.2em 0.2em 0.2em 0.3em;vertical-align:middle}@media(min-width:720px){.mw-parser-output .portalleft{margin:0.5em 1em 0.5em 0}.mw-parser-output .portalright{clear:right;float:right;margin:0.5em 0 0.5em 1em}}
/* end https://en.wikipedia.org/ */
</style>
<ul><li><a href="Django_(web_framework)" title="Django (web framework)">Django (web framework)</a></li>
<li><a href="Flask_(web_framework)" title="Flask (web framework)">Flask (web framework)</a></li>
<li><a href="Pylons_project" title="Pylons project">Pylons project</a></li>
<li><a href="Web2py" title="Web2py">Web2py</a></li>
<li><a href="Tornado_(web_server)" title="Tornado (web server)">Tornado (web server)</a></li>
<li><a href="Comparison_of_server-side_web_frameworks#Python" title="Comparison of server-side web frameworks">Comparison of server-side web frameworks § Python</a></li>
<li><a href="REST" title="REST">REST</a></li>
<li><a href="Python_(programming_language)" title="Python (programming language)">Python (programming language)</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2></div>
<ul><li><span class="official-website"><span class="url"><a rel="nofollow" class="external text" href="https://fastapi.tiangolo.com/">Official website</a></span></span> </li>
<li><a rel="nofollow" class="external text" href="https://github.com/tiangolo/fastapi">fastapi</a> on <a href="GitHub" title="GitHub">GitHub</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */
.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}
/* end https://en.wikipedia.org/ */
</style><div class="reflist reflist-columns references-column-width" style="column-width: 30em;">
<ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */
.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}
/* end https://en.wikipedia.org/ */
</style><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://github.com/tiangolo/fastapi/commits/master?after=eddbae948f04e13fe412dc45a569d10e34b698a4+1990&branch=master">"fastapi repo"</a>. <i><a href="GitHub" title="GitHub">GitHub</a></i>. 2018-12-05.</cite></span>
</li>
<li id="cite_note-wikidata-00c8c00049ae3112ac28756c6018b46d95694aa1-v20-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-wikidata-00c8c00049ae3112ac28756c6018b46d95694aa1-v20_2-0">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://github.com/fastapi/fastapi/releases/tag/0.116.1">"Release 0.116.1"</a>. 11 July 2025<span class="reference-accessdate">. Retrieved <span class="nowrap">18 July</span> 2025</span>.</cite></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://fastapi.tiangolo.com/">"FastAPI"</a>. <i>fastapi.tiangolo.com</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2024-04-10</span></span>.</cite></span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text"><cite id="CITEREFLubanovic2019" class="citation book cs1">Lubanovic, Bill (2019-11-06). <a rel="nofollow" class="external text" href="https://www.oreilly.com/library/view/introducing-python-2nd/9781492051374/"><i>Introducing Python: Modern Computing in Simple Packages</i></a> (2nd ed.). O'Reilly Media, Inc. pp. 397, 418. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>9781492051367</bdi>.</cite></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://docs.pydantic.dev/latest/why/#performance">"Why use Pydantic - Pydantic"</a>. <i>docs.pydantic.dev</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2023-09-21</span></span>.</cite></span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://fastapi.tiangolo.com/tutorial/body/">"Request Body - FastAPI"</a>. <i>fastapi.tiangolo.com</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2025-06-30</span></span>.</cite></span>
</li>
<li id="cite_note-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-7">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.starlette.io/">"Starlette"</a>. <i>www.starlette.io</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2023-09-21</span></span>.</cite></span>
</li>
<li id="cite_note-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-8">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://bugfactory.io/articles/restarting-uvicorn-workers-with-the-sighup-signal/">"Restarting 'uvicorn' Workers with the 'SIGHUP' Signal"</a>. <i>bugfactory.io</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2024-06-17</span></span>.</cite></span>
</li>
<li id="cite_note-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-9">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external free" href="https://fastapi.tiangolo.com/reference/openapi/docs/">https://fastapi.tiangolo.com/reference/openapi/docs/</a></span>
</li>
<li id="cite_note-10"><span class="mw-cite-backlink"><b><a href="#cite_ref-10">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://fastapi.tiangolo.com/tutorial/dependencies/#dependencies">"Dependencies"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">30 June</span> 2025</span>.</cite></span>
</li>
<li id="cite_note-11"><span class="mw-cite-backlink"><b><a href="#cite_ref-11">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://fastapi.tiangolo.com/advanced/websockets/">"WebSockets - FastAPI"</a>. <i>fastapi.tiangolo.com</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2025-06-30</span></span>.</cite></span>
</li>
<li id="cite_note-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-12">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://fastapi.tiangolo.com/tutorial/background-tasks/">"Background Tasks - FastAPI"</a>. <i>fastapi.tiangolo.com</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2025-06-30</span></span>.</cite></span>
</li>
</ol></div>
<div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1129693374">
/* start https://en.wikipedia.org/ */
.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}
/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1236075235">
/* start https://en.wikipedia.org/ */
.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style></div><div role="navigation" class="navbox" aria-labelledby="Python_web_frameworks122" style="padding:3px"><table class="nowraplinks mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><style data-mw-deduplicate="TemplateStyles:r1239400231">
/* start https://en.wikipedia.org/ */
.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}
/* end https://en.wikipedia.org/ */
</style><div id="Python_web_frameworks122" style="font-size:114%;margin:0 4em"><a href="Python_(programming_language)" title="Python (programming language)">Python</a> <a href="Web_framework" title="Web framework">web frameworks</a></div></th></tr><tr><td colspan="2" class="navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="CherryPy" title="CherryPy">CherryPy</a></li>
<li><a href="CubicWeb" title="CubicWeb">CubicWeb</a></li>
<li><a href="Django_(web_framework)" title="Django (web framework)">Django</a></li>
<li><a href="Flask_(web_framework)" title="Flask (web framework)">Flask</a></li>
<li><a href="Grok_(web_framework)" class="mw-redirect" title="Grok (web framework)">Grok</a></li>
<li><a href="Nevow" class="mw-redirect" title="Nevow">Nevow</a></li>
<li><a href="Pylons_project#Pylons_Framework" title="Pylons project">Pylons</a></li>
<li><a href="Pylons_project#Pyramid" title="Pylons project">Pyramid</a></li>
<li><a href="Quixote_(web_framework)" title="Quixote (web framework)">Quixote</a></li>
<li><a href="Tornado_(web_server)" title="Tornado (web server)">Tornado</a></li>
<li><a href="TurboGears" title="TurboGears">TurboGears</a></li>
<li><a href="Twisted_(software)" title="Twisted (software)">TwistedWeb</a></li>
<li><a href="Web2py" title="Web2py">web2py</a></li>
<li><a href="Zope#Zope_2" title="Zope">Zope 2</a></li>
<li><i>more</i>...</li></ul>
</div></td></tr><tr><td class="navbox-abovebelow hlist" colspan="2"><div>
<ul><li><a href="Comparison_of_server-side_web_frameworks#Python" title="Comparison of server-side web frameworks">Comparison</a></li></ul>
</div></td></tr></tbody></table></div>
<div class="navbox-styles"></div><div role="navigation" class="navbox" aria-labelledby="Web_frameworks386" style="padding:3px"><table class="nowraplinks mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><div id="Web_frameworks386" style="font-size:114%;margin:0 4em"><a href="Web_framework" title="Web framework">Web frameworks</a></div></th></tr><tr><td class="navbox-abovebelow hlist" colspan="2"><div>
<ul><li><a href="Comparison_of_server-side_web_frameworks" title="Comparison of server-side web frameworks">Comparison</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href=".NET" title=".NET">.NET</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="ASP.NET" title="ASP.NET">ASP.NET</a>
<ul><li><a href="ASP.NET_Core" title="ASP.NET Core">Core</a></li>
<li><a href="ASP.NET_AJAX" title="ASP.NET AJAX">AJAX</a></li>
<li><a href="ASP.NET_Dynamic_Data" title="ASP.NET Dynamic Data">Dynamic Data</a></li>
<li><a href="ASP.NET_MVC" title="ASP.NET MVC">MVC</a></li>
<li><a href="ASP.NET_Razor" title="ASP.NET Razor">Razor</a></li>
<li><a href="ASP.NET_Web_Forms" title="ASP.NET Web Forms">Web Forms</a></li></ul></li>
<li><a href="Blazor" title="Blazor">Blazor</a></li>
<li><a href="DotNetNuke" class="mw-redirect" title="DotNetNuke">DNN</a></li>
<li><a href="Base_One_Foundation_Component_Library" title="Base One Foundation Component Library">BFC</a></li>
<li><a href="MonoRail_(software)" title="MonoRail (software)">MonoRail</a></li>
<li><a href="Umbraco" title="Umbraco">Umbraco</a></li>
<li><a href="WebSharper" title="WebSharper">WebSharper</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="C%2B%2B" title="C++">C++</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="CppCMS" title="CppCMS">CppCMS</a></li>
<li><a href="Drogon_(software)" title="Drogon (software)">Drogon</a></li>
<li><a href="Wt_(web_toolkit)" title="Wt (web toolkit)">Wt</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Adobe_ColdFusion" title="Adobe ColdFusion">ColdFusion</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="ColdBox_Platform" title="ColdBox Platform">ColdBox Platform</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Common_Lisp" title="Common Lisp">Common Lisp</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="CL-HTTP" title="CL-HTTP">CL-HTTP</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Haskell" title="Haskell">Haskell</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Servant_(web_framework)" title="Servant (web framework)">Servant</a></li>
<li><a href="Snap_(web_framework)" title="Snap (web framework)">Snap</a></li>
<li><a href="Yesod_(web_framework)" title="Yesod (web framework)">Yesod</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Java_(software_platform)" title="Java (software platform)">Java</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="AppFuse" title="AppFuse">AppFuse</a></li>
<li><a href="Grails_(framework)" title="Grails (framework)">Grails</a></li>
<li><a href="Google_Web_Toolkit" title="Google Web Toolkit">GWT</a></li>
<li><a href="ICEfaces" title="ICEfaces">ICEfaces</a></li>
<li><a href="JHipster" title="JHipster">JHipster</a></li>
<li><a href="JWt_(Java_web_toolkit)" title="JWt (Java web toolkit)">JWt</a></li>
<li><a href="Jakarta_Faces#JSF_and_Ajax" title="Jakarta Faces">Mojarra</a></li>
<li><a href="Play_Framework" title="Play Framework">Play</a></li>
<li><a href="Remote_Application_Platform" title="Remote Application Platform">Remote Application Platform</a></li>
<li><a href="JBoss_Seam" title="JBoss Seam">Seam</a></li>
<li><a href="Apache_Sling" title="Apache Sling">Sling</a></li>
<li><a href="Spring_Framework#Model-view-controller_framework" title="Spring Framework">Spring</a></li>
<li><a href="Stripes_(framework)" title="Stripes (framework)">Stripes</a></li>
<li><a href="Apache_Struts" title="Apache Struts">Struts</a></li>
<li><a href="Apache_Tapestry" title="Apache Tapestry">Tapestry</a></li>
<li><a href="Vaadin" title="Vaadin">Vaadin</a></li>
<li><a href="Vert.x" title="Vert.x">Vert.x</a></li>
<li><a href="Apache_Wicket" title="Apache Wicket">Wicket</a></li>
<li><a href="WaveMaker" title="WaveMaker">WaveMaker</a></li>
<li><a href="ZK_(framework)" title="ZK (framework)">ZK</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="JavaScript" title="JavaScript">JavaScript</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Angular_(web_framework)" title="Angular (web framework)">Angular</a>/<a href="AngularJS" title="AngularJS">AngularJS</a></li>
<li><a href="Backbone.js" title="Backbone.js">Backbone.js</a></li>
<li><a href="Google_Closure_Tools" title="Google Closure Tools">Closure</a></li>
<li><a href="Dojo_Toolkit" title="Dojo Toolkit">Dojo Toolkit</a></li>
<li><a href="Ember.js" title="Ember.js">Ember.js</a></li>
<li><a href="Express.js" title="Express.js">Express.js</a></li>
<li><a href="Ext_JS" title="Ext JS">Ext JS</a></li>
<li><a href="Fastify" title="Fastify">Fastify</a></li>
<li><a href="Htmx" title="Htmx">htmx</a></li>
<li><a href="JQuery" title="JQuery">jQuery</a></li>
<li><a href="Knockout.js" class="mw-redirect" title="Knockout.js">Knockout.js</a></li>
<li><a href="Meteor_(web_framework)" title="Meteor (web framework)">Meteor</a></li>
<li><a href="MooTools" title="MooTools">MooTools</a></li>
<li><a href="NestJS" title="NestJS">NestJS</a></li>
<li><a href="Next.js" title="Next.js">Next.js</a></li>
<li><a href="Nuxt.js" class="mw-redirect" title="Nuxt.js">Nuxt.js</a></li>
<li><a href="Node.js" title="Node.js">Node.js</a></li>
<li><a href="OpenUI5" title="OpenUI5">OpenUI5</a></li>
<li><a href="Prototype_JavaScript_Framework" title="Prototype JavaScript Framework">Prototype</a></li>
<li><a href="React_(software)" title="React (software)">React</a></li>
<li><a href="Remix_(web_framework)" class="mw-redirect" title="Remix (web framework)">Remix</a></li>
<li><a href="Sencha_Touch" title="Sencha Touch">Sencha Touch</a></li>
<li><a href="SproutCore" title="SproutCore">SproutCore</a></li>
<li><a href="Svelte" title="Svelte">Svelte</a></li>
<li><a href="Vue.js" title="Vue.js">Vue.js</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Perl" title="Perl">Perl</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Catalyst_(software)" title="Catalyst (software)">Catalyst</a></li>
<li><a href="Dancer_(software)" title="Dancer (software)">Dancer</a></li>
<li><a href="Maypole_framework" class="mw-redirect" title="Maypole framework">Maypole</a></li>
<li><a href="Mojolicious" title="Mojolicious">Mojolicious</a></li>
<li><a href="WebGUI" title="WebGUI">WebGUI</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="PHP" title="PHP">PHP</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="CakePHP" title="CakePHP">CakePHP</a></li>
<li><a href="CodeIgniter" title="CodeIgniter">CodeIgniter</a></li>
<li><a href="Drupal" title="Drupal">Drupal</a></li>
<li><a href="EZ_Publish" title="EZ Publish">eZ Publish</a></li>
<li><a href="Fat-Free_Framework" title="Fat-Free Framework">Fat-Free</a></li>
<li><a href="Neos_Flow" title="Neos Flow">Flow</a></li>
<li><a href="FuelPHP" title="FuelPHP">FuelPHP</a></li>
<li><a href="Grav_(CMS)" title="Grav (CMS)">Grav</a></li>
<li><a href="Gyroscope_(software)" title="Gyroscope (software)">Gyroscope</a></li>
<li><a href="Horde_(software)" title="Horde (software)">Horde</a></li>
<li><a href="Joomla" title="Joomla">Joomla!</a></li>
<li><a href="Laminas" title="Laminas">Laminas</a></li>
<li><a href="Laravel" title="Laravel">Laravel</a></li>
<li><a href="Li3_(software)" title="Li3 (software)">li₃</a></li>
<li><a href="Midgard_(software)" title="Midgard (software)">Midgard</a></li>
<li><a href="MODX" title="MODX">MODX</a></li>
<li><a href="Phalcon_(framework)" title="Phalcon (framework)">Phalcon</a></li>
<li><a href="PHP-Fusion" title="PHP-Fusion">PHP-Fusion</a></li>
<li><a href="PHP-Nuke" title="PHP-Nuke">PHP-Nuke</a></li>
<li><a href="Pop_PHP_Framework" title="Pop PHP Framework">Pop PHP</a></li>
<li><a href="PRADO_(framework)" title="PRADO (framework)">PRADO</a></li>
<li><a href="ProcessWire" title="ProcessWire">ProcessWire</a></li>
<li><a href="Qcodo" title="Qcodo">Qcodo</a></li>
<li><a href="Silverstripe_CMS" title="Silverstripe CMS">Silverstripe</a></li>
<li><a href="Symfony" title="Symfony">Symfony</a></li>
<li><a href="TYPO3" title="TYPO3">TYPO3</a></li>
<li><a href="WordPress" title="WordPress">WordPress</a></li>
<li><a href="XOOPS" title="XOOPS">XOOPS</a></li>
<li><a href="Yii" title="Yii">Yii</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Python_(programming_language)" title="Python (programming language)">Python</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Zope#BlueBream" title="Zope">BlueBream</a></li>
<li><a href="CherryPy" title="CherryPy">CherryPy</a></li>
<li><a href="CubicWeb" title="CubicWeb">CubicWeb</a></li>
<li><a href="Django_(web_framework)" title="Django (web framework)">Django</a></li>
<li><a href="Flask_(web_framework)" title="Flask (web framework)">Flask</a></li>
<li><a href="Grok_(web_framework)" class="mw-redirect" title="Grok (web framework)">Grok</a></li>
<li><a href="Nevow" class="mw-redirect" title="Nevow">Nevow</a></li>
<li><a href="Pyjs" title="Pyjs">Pyjs</a></li>
<li><a href="Pylons_project#Pylons_Framework" title="Pylons project">Pylons</a></li>
<li><a href="Pylons_project#Pyramid" title="Pylons project">Pyramid</a></li>
<li><a href="Quixote_(web_framework)" title="Quixote (web framework)">Quixote</a></li>
<li><a href="Tornado_(web_server)" title="Tornado (web server)">Tornado</a></li>
<li><a href="TurboGears" title="TurboGears">TurboGears</a></li>
<li><a href="Web2py" title="Web2py">web2py</a></li>
<li><a href="Zope#Zope_2" title="Zope">Zope 2</a></li>
<li><i>more</i>...</li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Ruby_(programming_language)" title="Ruby (programming language)">Ruby</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Merb" title="Merb">Merb</a></li>
<li><a href="Padrino_(web_framework)" title="Padrino (web framework)">Padrino</a></li>
<li><a href="Ruby_on_Rails" title="Ruby on Rails">Ruby on Rails</a></li>
<li><a href="Sinatra_(software)" title="Sinatra (software)">Sinatra</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Rust_(programming_language)" title="Rust (programming language)">Rust</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Rocket_(web_framework)" title="Rocket (web framework)">Rocket</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Scala_(programming_language)" title="Scala (programming language)">Scala</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Lift_(web_framework)" title="Lift (web framework)">Lift</a></li>
<li><a href="Play_Framework" title="Play Framework">Play</a></li>
<li><a href="Scalatra" title="Scalatra">Scalatra</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Smalltalk" title="Smalltalk">Smalltalk</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="AIDA/Web" title="AIDA/Web">AIDA/Web</a></li>
<li><a href="Seaside_(software)" title="Seaside (software)">Seaside</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Other languages</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Oracle_Application_Express" title="Oracle Application Express">Application Express</a> (<a href="PL/SQL" title="PL/SQL">PL/SQL</a>)</li>
<li><a href="Grails_(framework)" title="Grails (framework)">Grails</a> (<a href="Groovy_(programming_language)" class="mw-redirect" title="Groovy (programming language)">Groovy</a>)</li>
<li><a href="OpenACS" class="mw-redirect" title="OpenACS">OpenACS</a> (<a href="Tcl" title="Tcl">Tcl</a>)</li>
<li><a href="Phoenix_(web_framework)" title="Phoenix (web framework)">Phoenix</a> (<a href="Elixir_(programming_language)" title="Elixir (programming language)">Elixir</a>)</li>
<li><a href="Shiny_(web_framework)" title="Shiny (web framework)">Shiny (web framework)</a> (<a href="R_(programming_language)" title="R (programming language)">R</a>)</li>
<li><a href="SproutCore" title="SproutCore">SproutCore</a> (<a href="JavaScript" title="JavaScript">JavaScript</a>-<a href="Ruby_(programming_language)" title="Ruby (programming language)">Ruby</a>)</li>
<li><a href="Yaws_(web_server)" title="Yaws (web server)">Yaws</a> (<a href="Erlang_(programming_language)" title="Erlang (programming language)">Erlang</a>)</li></ul>
</div></td></tr></tbody></table></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-07-09" href="https://en.wikipedia.org/wiki/?title=FastAPI&oldid=1299698931">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
</body></html>